From d935fccc37786af2f95100170a5de622d21621e9 Mon Sep 17 00:00:00 2001 From: "mafetter@fleming.research" Date: Mon, 14 Mar 2005 18:44:10 +0000 Subject: [PATCH] bitkeeper revision 1.1236.32.1 (4235db7asX6jSkYD5v9LR5aXTXVuVg) Bug fix for debugtrace_dump stuff. Signed-off-by: michael.fetterman@cl.cam.ac.uk --- xen/drivers/char/console.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 03314d6793..be5b2fcc36 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -511,7 +511,10 @@ void debugtrace_dump(void) spin_lock_irqsave(&debugtrace_lock, flags); + printk("debugtrace_dump() starting\n"); + /* Print oldest portion of the ring. */ + ASSERT(debugtrace_buf[debugtrace_bytes - 1] == 0); serial_puts(sercon_handle, &debugtrace_buf[debugtrace_prd]); /* Print youngest portion of the ring. */ @@ -520,6 +523,8 @@ void debugtrace_dump(void) memset(debugtrace_buf, '\0', debugtrace_bytes); + printk("debugtrace_dump() finished\n"); + spin_unlock_irqrestore(&debugtrace_lock, flags); watchdog_on = _watchdog_on; @@ -538,6 +543,8 @@ void debugtrace_printk(const char *fmt, ...) spin_lock_irqsave(&debugtrace_lock, flags); + ASSERT(debugtrace_buf[debugtrace_bytes - 1] == 0); + va_start(args, fmt); (void)vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); @@ -563,20 +570,24 @@ void debugtrace_printk(const char *fmt, ...) static int __init debugtrace_init(void) { int order; - unsigned int kbytes; + unsigned int kbytes, bytes; /* Round size down to next power of two. */ while ( (kbytes = (debugtrace_kilobytes & (debugtrace_kilobytes-1))) != 0 ) debugtrace_kilobytes = kbytes; - debugtrace_bytes = debugtrace_kilobytes << 10; - if ( debugtrace_bytes == 0 ) + bytes = debugtrace_kilobytes << 10; + if ( bytes == 0 ) return 0; - order = get_order(debugtrace_bytes); + order = get_order(bytes); debugtrace_buf = (unsigned char *)alloc_xenheap_pages(order); ASSERT(debugtrace_buf != NULL); + memset(debugtrace_buf, '\0', bytes); + + debugtrace_bytes = bytes; + return 0; } __initcall(debugtrace_init); -- 2.30.2